<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 构造函数 函数名的首字母大写
        // function Person(name,age){
        //     this.name=name;
        //     this.age=age;
        //     this.jump=function(){
        //         console.log('ysnysn');
        //     }
        // }
        // let p1=new Person('tom',12);
        // console.log(p1);
        // // 在原型对象上添加属性和方法
        // Person.prototype.hobby=function(){
        //     console.log('喜欢睡觉');
        // }
        // // 在自身上添加属性和方法
        // Person.test=function(){
        //     console.log('自身的方法');
        // }
        // class类俗称构造函数的语法糖

            class Person{
                constructor(name,age){
                    this.name=name;
                    this.age=age;
                    this.jump=function(){
                        console.log('ysnysn');
                        console.log(this); //实例对象
                    }
                }
                // 在原型对象上添加属性和方法
                nihao(){
                    console.log('我一小');
                    console.log(this); //实例对象
                }
                // 在所有实例对象上添加属性
                color='red';
                // statis后面跟的属性和方法 添加到person类自身上,这种称之为静态的属性和方法
                static hobby(){
                    console.log('这个爱好在哪儿?');
                    console.log(this); //Person
                }
                static nvpengyou='xixi';
            }
            // 实例对象
            let p2=new Person('niuniu',11);
            console.log(p2);

            console.dir(Person);

            // 调用静态属性方法
            Person.hobby();
            console.log(Person.nupengyou);
            // 调用原型对象上的属性和方法
            p2.nihao();

            p2.jump();

            function foo(){ //class中默认是严格模式 此处this为undefined
                console.log(this);
            }
            foo();  //window
            let obj={
                name:'tom',
                jump(){
                    console.log(this);
                }
            }
            obj.jump();
            let test=obj.jump;
            console.log(test);
            test();
    </script>
</body>
</html>